import requests
import re
import os
import time
headers = {
    'Cookie': 'PHPSESSID=7c8nj8rf1rm23a414pf5fp19go; __gads=ID=b594155f6196cdf8:T=1747795357:RT=1747967732:S=ALNI_MY4DkwRhSs8FHoHWxXJBJJPFB4vCg; __gpi=UID=000010c9950145ec:T=1747795357:RT=1747967732:S=ALNI_MYWfeahL1V26b6wmlZuiUxxkPCnLg; __eoi=ID=41f8bcd8d5110aa6:T=1747795357:RT=1747967732:S=AA-AfjYCCCiQ-trYEWyrBOxNhxJq',
    #有时候我们对一张页面进行请求的时候，如果请求的过程中不携带cookie的话，那么我们是无法请求到正确的页面数据，
    #这是一种非常常见的反爬机制，因此遇到这种情况我们必须，所有的请求必须携带cookie
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36',
    'Referer': 'https://www.fabiaoqing.com/' #Referer里记录的是请求的来路，所以通过设置Referer黑白名单，可以控制哪个页面或者域名过来的请求是可以访问的。
}

images = 'img'
if not os.path.exists(images): #如果不存在就创建images目录
    os.mkdir('img') #使用os模块创建一个目录

def download(name,url):
    #定义、封装代码块，传入name url，下载图片
    response = requests.get(url,headers=headers)
    print(response.status_code)#200表示请求成功
    suffix = url.split('.')[-1]
    try:
        with open(images + '/' + name + '.' + suffix,mode='wb') as file:#wb:write binary以二进制写入
            file.write(response.content)
    except:#如果失败了
        print('保存失败:',name + '.' + suffix)

response = requests.get('https://www.fabiaoqing.com/biaoqing/lists/page/1.html',headers=headers,verify=False)
# re_temp = '<img class="ui image lazy" data-original="(.*?)" title="(.*?)" src="/Public/lazyload/img/transparent.gif" alt=".*" style="max-height:188;margin: 0 auto"/>'
re_temp = '<img class="ui image" src="(.*?)" alt="(.*?)" style="max-height: 170;max-width: 100%;margin: 0 auto">'
#re正则表达式(.*?)
result = re.findall(re_temp,response.text)
for img in result:
    time.sleep(2) #延时访问，避免访问过快而被封ip，避免影响服务器正常访问
    print(img)
    download(img[1],img[0])